package intelligentCustomer.memory;

import java.io.*;

/**
 * 基于文件的记忆存储库实现
 */
public class FileMemoryRepository implements MemoryRepository {
    /** 存储目录 */
    private final String storageDir;
    
    /**
     * 构造函数
     * 
     * @param storageDir 存储目录路径
     */
    public FileMemoryRepository(String storageDir) {
        this.storageDir = storageDir;
        // 确保目录存在
        File dir = new File(storageDir);
        if (!dir.exists()) {
            dir.mkdirs();
        }
    }
    
    /**
     * 加载用户档案
     * 
     * @param userId 用户ID
     * @return 用户档案对象，如果不存在则返回null
     */
    @Override
    public UserProfile loadUserProfile(String userId) {
        File file = new File(storageDir + File.separator + userId + ".profile");
        if (!file.exists()) {
            return null;
        }
        
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) {
            return (UserProfile) ois.readObject();
        } catch (IOException | ClassNotFoundException e) {
            System.err.println("加载用户档案失败: " + e.getMessage());
            return null;
        }
    }
    
    /**
     * 保存用户档案
     * 
     * @param profile 用户档案对象
     * @return 保存是否成功
     */
    @Override
    public boolean saveUserProfile(UserProfile profile) {
        File file = new File(storageDir + File.separator + profile.getUserId() + ".profile");
        
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file))) {
            oos.writeObject(profile);
            return true;
        } catch (IOException e) {
            System.err.println("保存用户档案失败: " + e.getMessage());
            return false;
        }
    }
} 